Модуль iconv
Модуль iconv
предоставляет метод конвертации строки с одним типом кодировки в строку с другим типом кодировки, например из ASCII в UTF-8. Он основывается на процедурах с iconv в POSIX.
Точный список доступных кодировок зависит от окружения. Как правило, в список входят ASCII, BIG5, KOI8R, LATIN8, MS-GREEK, SJIS и около 100 других. Чтобы увидеть общий список, введите команду iconv --list
в терминале.
Ниже приведен перечень всех функций модуля iconv
.
Имя | Назначение |
---|---|
iconv.new() | Создание экземпляра iconv |
iconv.converter() | Преобразование строки |
-
iconv.
new
(to, from) Создание нового iconv-экземпляра.
Параметры: возвращает: новый экземпляр iconv – на самом деле, вызываемая функция
тип возвращаемого значения: пользовательские данные
Если значение одного из параметров представляет собой недопустимое имя, появится сообщение об ошибке.
Пример:
tarantool> converter = require('iconv').new('UTF8', 'ASCII') --- ...
-
iconv.
converter
(input-string) Преобразование.
param string input-string: строка для преобразования («из») возвращает: строка, получаемая в результате преобразования («в») Если что-либо в строке input-string нельзя преобразовать, появится сообщение об ошибке, строка останется неизменной.
Пример:
Мы знаем, что кодовая точка для заглавной буквы «Д» в Unicode представляет собой шестнадцатеричное число 0414 в соответствии с таблицей символов Unicode. Таким образом, так она будет выглядеть в UTF-16. Мы знаем, что как правило, Tarantool использует набор символов UTF-8. Поэтому для создания конвертора из UTF-8 в UTF-16 используем string.hex(„Д“), чтобы показать, как выглядит кодировка Д в исходном наборе символов UTF-8, а затем используем string.hex(„Д“-after-conversion), чтобы показать, как она будет выглядеть в целевом наборе символов UTF-16. Поскольку результатом будет 0414, видим, что преобразование с помощью iconv сработало. (В разных реализациях iconv могут использоваться разные имена, например UTF-16BE вместо UTF16BE.)
tarantool> string.hex('Д') --- - d094 ... tarantool> converter = require('iconv').new('UTF16BE', 'UTF8') --- ... tarantool> utf16_string = converter('Д') --- ... tarantool> string.hex(utf16_string) --- - '0414' ...